namespace classifier_test
{

class stream_classifier : public classifier_common
{
public:
	stream_classifier();
	stream_classifier(const stream_classifier& Val);
	virtual smart_ptr<stream_classifier> clone() const = 0;
	void serialize(serializer& Serializer);

	classifier* get_base_classifier() const;
	virtual void set_base_classifier(classifier* Val);

	virtual void build(subarray<const stream_record* const> Data) = 0;
	virtual void train(const stream_record& Record) = 0;
	virtual void train(subarray<const stream_record* const> Data);
	virtual discr_value classify(const stream_record& Record) const;
	virtual void estimate(const stream_record& Record, array<double>& Probs) const = 0;
	virtual int get_concept_count() const;

protected:
	smart_ptr<classifier> BaseClassifier;
};

}
